#include "threadpool.hpp"
#include "Task.hpp"
#include <memory>

using namespace ThreadPoolModule;

int main()
{
    ENABLE_CONSOLE_LOG();
    ThreadPool<task_t>::GetInstance()->Start();
    char c;
    int cnt = 5;
    while (cnt)
    {
        // std::cin >> c;
        ThreadPool<task_t>::GetInstance()->Enqueue(Push);
        cnt--;
        sleep(1);
    }

    ThreadPool<task_t>::GetInstance()->Stop();
    ThreadPool<task_t>::GetInstance()->Wait();
    // ENABLE_CONSOLE_LOG();
    // // ENABLE_FILE_LOG();

    // ThreadPool<task_t>* tp = ThreadPool<task_t>::GetInstance();
    // tp->Start();
    // sleep(1);

    // int cnt = 10;
    // char c;
    // while (cnt)
    // {
    //     // std::cin >> c;
    //     task_t t = Push;
    //     tp->Enqueue(t);
    //     // tp->Enqueue(Push);
    //     cnt--;
    //     sleep(1);
    // }
    
    // tp->Stop();

    // sleep(3);

    // tp->Wait();

    return 0;
}